package com.langChain4j.conversation.service;

import com.base.frame.common.service.IBaseService;
import com.langChain4j.api.entity.AgentDialogSession;
import com.langChain4j.conversation.controller.vo.ConversationSessionVo;
import com.langChain4j.conversation.vo.MessageRequest;
import com.langChain4j.conversation.vo.SessionRequest;
import reactor.core.publisher.Flux;

/**
 * 智能体对话交互服务接口
 *
 * @author linjun
 */
public interface AgentConversationService extends IBaseService<AgentDialogSession> {

    /**
     * 根据sessionId查询会话信息
     * @param sessionId
     * @return
     */
    AgentDialogSession queryBySessionId(String sessionId);

    /**
     * 根据sessionId查询会话信息
     * @param sessionId
     * @return
     */
    AgentDialogSession queryActiveBySessionId(String sessionId);

    /**
     * 发起对话会话
     *
     * @param sessionRequest 会话请求参数
     * @return 结果对象
     */
    ConversationSessionVo startConversation(SessionRequest sessionRequest);

    /**
     * 发送对话消息
     *
     * @param messageRequest 消息请求参数
     * @return 结果对象
     */
    Flux<String> sendMessage(MessageRequest messageRequest);

    /**
     * 结束对话会话
     *
     * @param sessionRequest 会话请求参数
     * @return 结果对象
     */
    ConversationSessionVo endConversation(SessionRequest sessionRequest);

    /**
     * 获取会话历史记录
     *
     * @param sessionRequest 会话请求参数
     * @return 结果对象
     */
    ConversationSessionVo getConversationHistory(SessionRequest sessionRequest);
}